/**
    给定两个大小为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。

    进阶：你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗？

    

    示例 1：

    输入：nums1 = [1,3], nums2 = [2]
    输出：2.00000
    解释：合并数组 = [1,2,3] ，中位数 2
    示例 2：

    输入：nums1 = [1,2], nums2 = [3,4]
    输出：2.50000
    解释：合并数组 = [1,2,3,4] ，中位数 (2 + 3) / 2 = 2.5
    示例 3：

    输入：nums1 = [0,0], nums2 = [0,0]
    输出：0.00000
    示例 4：

    输入：nums1 = [], nums2 = [1]
    输出：1.00000
    示例 5：

    输入：nums1 = [2], nums2 = []
    输出：2.00000
    

    提示：

    nums1.length == m
    nums2.length == n
    0 <= m <= 1000
    0 <= n <= 1000
    1 <= m + n <= 2000
    -106 <= nums1[i], nums2[i] <= 106
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findMedianSortedArrays = function(nums1, nums2) {
    if(nums1.length > nums2.length) {
        let temp = nums2;
        nums2 = nums1;
        nums1 = temp;
    }
    let k = 0;
    for(let i = 0; i < nums1.length; i++) {
        let isInsert = false;
        for(let j = k; j < nums2.length; j++) {
            if(nums1[i] <= nums2[j]) {
                nums2.splice(j,0, nums1[i]);
                isInsert = true;
                k = j;
                break;
            }
        }
        if(isInsert == false) {
            nums2 = nums2.concat(nums1.slice(i));
            break;
        }
    }
    if(nums2.length % 2 == 0) {
        let idx = nums2.length / 2;
        return (nums2[idx] + nums2[idx-1]) / 2;
    } else {
        return nums2[Math.floor(nums2.length / 2)];
    }
};
function run () {
    let args = [
        [1,3],
        [2]
    ];
    return findMedianSortedArrays(...args);
}
module.exports = run;